package com.itheima.service;



import com.itheima.dto.OrdersPageQueryDTO;
import com.itheima.dto.OrdersStatisticsDto;
import com.itheima.dto.OrdersPaymentDTO;
import com.itheima.dto.OrdersSubmitDTO;
import com.itheima.pojo.Orders;
import com.itheima.vo.BusinessDataVO;
import com.itheima.vo.TurnoverReportVO;
import com.itheima.vo.*;
import com.itheima.result.PageBean;
import com.itheima.vo.SalesTop10ReportVO;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

public interface OrderService {
    /**
     * 订单分页查询
     * @param ordersPageQueryDTO
     * @return
     */

    PageBean page(OrdersPageQueryDTO ordersPageQueryDTO);
    /**
     * 提交订单
     * @param ordersSubmitDTO
     * @return
     */
    OrderSubmitVO submit(OrdersSubmitDTO ordersSubmitDTO);
    /**
     * 订单支付
     *
     * @param ordersPaymentDTO
     * @return
     */


    LocalDateTime getByNumber(OrdersPaymentDTO ordersPaymentDTO);
    /**
     * 历史订单查询
     * @param ordersPageQueryDTO
     * @return
     */
    PageBean pageHistoryOrders(OrdersPageQueryDTO ordersPageQueryDTO);
    /**
     * 查询订单详情
     * @param id
     * @return
     */
    OrderVO findById(Long id);
    /**
     * 取消订单
     * @param id
     * @return
     */
    void cancelOrder(Long id);

    /**
     * 再来一单
     * @param id
     * @return
     */
    void addAgain(Long id);
    /**
     * 接单
     * @param orders
     * @return
     */
    void confirmOrder(Orders orders);
    /**
     * 派送订单
     * @param id
     * @return
     */
    void deliveryById(Long id);
    /**
     * 拒绝接单
     * @param orders
     * @return
     */
    void reject(Orders orders);
    /**
     * 取消订单
     * @param orders
     * @return
     */
    void cancel(Orders orders);
    /**
     * 完成订单
     * @param id
     * @return
     */
    void complete(Long id);
    /**
     * 各个状态的订单数量统计
     * @return
     */
    OrderStatisticsVO getCount();
    /**
     * 订单统计
     * @param statisticsDto
     * @return
     */
    OrderReportVO orderStatistics(OrdersStatisticsDto statisticsDto);
    /**
     * 查询销量排名top10接口
     * @param dto
     * @return
     */
    SalesTop10ReportVO top(OrdersStatisticsDto dto);
    /**
     * * 用户催单
     * * @param id
     * */
    void reminder(Long id);

    TurnoverReportVO turnoverStatistics(OrdersStatisticsDto statisticsDto);

    BusinessDataVO getBusinessData(LocalDateTime begin, LocalDateTime end);

    List<BusinessDataVO> getData(LocalDate begin, LocalDate end);


    OrderOverViewVO overviewOrders();

    BusinessDataVO businessData();
}